import axios from "axios";

import {Message} from "element-ui";
import router from "@/router";

// 请求拦截器
axios.interceptors.request.use(
    config =>{
        // 如果sessionStorage存在token（已经登陆）
        if (window.sessionStorage.getItem("tokenStr")) {
            // 将token信息加入请求头
            config.headers['Authorization'] = window.sessionStorage.getItem("tokenStr");
        }
        return config;
    },
    error => {
        Message.error("发生错误："+error);
    }
)



// 响应拦截器
axios.interceptors.response.use(
    // http响应码200走这里
    success =>{
        // 判断业务逻辑错误
        // 判断http响应码是否为200
        if (success.status && success.status == 200) {
            // 判断返回结果内的状态码
            if (success.data.code == 500 || success.data.code == 401 || success.data.code == 403){
                Message.error({message:success.data.message});
                return null;
            }
            if (success.data.message){
                Message.success({message:success.data.message});
            }
            return success.data;
        }
    },
    // http响应码非200走这里
    error => {
        if (error.response.code == 504 || error.response.cancel == 404){
            Message.error({message:'服务器被吃了( ╯□╰ )'});
        } else if (error.response.code == 500){
            Message.error({message:'服务器发生错误'});
        } else if (error.response.code == 403){
            Message.error({message:'权限不足，请联系管理员'});
        } else if (error.response.code == 401){
            Message.error({message:'尚未登陆，请先登录'});
            router.replace('/');
        } else {
            if (error.response.data.message){
                Message.error({message:error.response.data.message})
            }else {
                Message.error({message:'未知错误'});
            }
        }
        return;
    })

// 前缀
let base = ''

// 传送json格式的post请求
export const postRequest = (url,params) =>{
    return axios({
        method:'post',
        url:`${base}${url}`,
        data:params
    })
}

// 传送Json格式的put请求
export const putRequest = (url,params) =>{
    return axios({
        method:'put',
        url:`${base}${url}`,
        data:params
    })
}

// 传送json的get请求
export const getRequest = (url,params) =>{
    return axios({
        method:'get',
        url:`${base}${url}`,
        data:params
    })
}

// 传送json的delete请求
export const deleteRequest = (url,params) =>{
    return axios({
        method:'delete',
        url:`${base}${url}`,
        data:params
    })
}
